# 1. parenthesize every sentence into unary function applications, either leftward or rightward # 2. the type of a sentence in boolean # 3. thing42:chair, thing23:chair # chair is predicate that is true of things that are chairs and false of things that are not # chairs # the type of a noun is thing->boolean # 4. A N --> A(N) # D N --> D(N) # N PP ---> PP(N) # NP VP --> VP(NP) # P NP --> P(NP) primitive type boolean primitive type thing typedef N = thing->boolean = thing->S typedef A = N->N = (thing->S)->(thing->S) = (thing->boolean)->(thing->boolean) typedef D = N->NP typedef P = NP->PP = NP->(N<-N) = NP->((thing->S)<-(thing->S)) = NP->((thing->boolean)<-(thing->boolean)) typedef Vintrans = VP = S<-NP = boolean<-NP typedef Vtrans = NP->VP = NP->(S<-NP) = NP->(boolean<-NP) typedef NP = typedef VP = S<-NP = boolean<-NP typedef S = boolean typedef PP = N<-N = (thing->S)<-(thing->S) = (thing->boolean)<-(thing->boolean) chair:thing->boolean table:thing->boolean big red round big table big chair red table red chair round table round chair the table the chair the big table the big chair the red table the red chair the round table the round chair on the table on the chair table on the table table on the chair chair on the table chair on the chair the table the chair the table on the table the table on the chair the chair on the table the chair on the chair table chair table on the table table on the chair chair on the table chair on the chair N(PP) on the table on the chair the table the chair the man ate the apple the man ate ate the apple